package com.hunny.singleton;

/**
 * 静态内部类懒惰持有人单例
 *
 * @author Create By Cb
 * @date 2022/04/25
 * @since 2022/4/25 9:57
 * <p>
 * 利用了类加载机制来保证初始化 instance 时只有一个线程，
 * 所以也是线程安全的，同时没有性能损耗，既实现了线程安全，又避免了同步带来的性能影响
 * </p>
 */
public class LazyHolderSingleton extends BaseSingleton {

    /**
     * 懒惰持有人
     *
     * @author Create By Cb
     * @date 2022/04/25
     */
    private static class LazyHolder {
        /**
         * 实例
         */
        private static final LazyHolderSingleton INSTANCE = new LazyHolderSingleton();
    }

    /**
     * 懒惰持有人单例
     */
    private LazyHolderSingleton() {
    }

    /**
     * 获得实例
     *
     * @return {@link LazyHolderSingleton}
     */
    public static LazyHolderSingleton getInstance() {
        return LazyHolder.INSTANCE;
    }
}